
\section{Results}

\label{sec:results}

In this section, we present the results of our implementation. For the CPU
based results, we used a Macbook Pro with Intel i7-2675QM processor. The GPU
results are from a Lenovo T420s laptop with Nvidia NVS4200M GPU. We present the
results for first 100 time steps with the following system parameters: 
% Summarize this in a table or some other pretty way: This seems fine enough
\begin{align}
& x_i \in \mathcal{R}^3, u_i \in \mathcal{R} & \nonumber \\
& n = 1, N = 180 & \nonumber \\
& \underline{u} = -10,  \bar{u} = 10 & \nonumber \\
& \underline{x} = 20 ^o C, 
\bar{x} = 23 ^o C & \nonumber \\
& \Delta t = 1 \text{ minute} & \nonumber
\end{align}

For the first 100 time steps, our PQP implementation took an average of 1.1881
seconds for each time step, with a minimum of 0.3964 seconds and a maximum of
2.8209 seconds.

In Fig~\ref{fig:TimeStepPerformance}, we present the time it takes to solve the
quadratic program for 100 time steps. It can be seen that as the number of
non-zero elements in $\lambda$ increases, the time required for the computation
increases too, both on CPU and GPU. This is as expected, because the number of
global memory accesses increases.
In Fig~\ref{fig:LambdaIterationsALL}, we present the time required for different
iterations for one run of the algorithm. As more and more elements of $\lambda
\rightarrow 0$, the time required for individual iteration drops off. 


\begin{figure}
\begin{center}
\includegraphics[width=\textwidth]{figures/CompTimeVSTimeStep.png}
\caption{Time Taken to Solve Quadratic Program for First 100 Time steps}
\label{fig:TimeStepPerformance}
\end{center}
\end{figure}

\begin{figure}
\includegraphics[width=\textwidth]{figures/LambdaVSiterationsALL.pdf}
\caption{Time for Different Iterations in Time Step 0}
\label{fig:LambdaIterationsALL}
\end{figure}

%\begin{figure}
%\includegraphics[width=\textwidth]{figures/LambdaVSiterationsSS.pdf}
%\label{fig:LambdaIterationsSS}
%\end{figure}
